Micron Document
🎖️GitЯра🎖️

Commit f53a0c6a242363823e62923a81093eac5eb97226


Parents : c46973a
Author : James Rich <james.a.rich@gmail.com>
Date : 2026-05-18T17:30:31-05:00

fix: show distance in previews by providing a local reference node

Distance was never visible in screenshots because thisNode was null,
making thisNode?.distance(thatNode) return null.

Added previewLocalNode() ~1.6km away from the sample node so distance
renders in both Complete and Compact previews when showLocation is on.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Changes

14 files changed, 26 insertions(+), 8 deletions(-)


Diff

diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettings.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettings.kt
index 7b79908831..e8fdaa18e5 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettings.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettings.kt
@@ -178,11 +178,12 @@ fun NodeLayoutSettings(
)
val previewNode = remember { previewSampleNode() }
+ val localNode = remember { previewLocalNode() }
when (density) {
NodeListDensity.COMPLETE ->
NodeItem(
- thisNode = null,
+ thisNode = localNode,
thatNode = previewNode,
distanceUnits = 0,
tempInFahrenheit = false,
@@ -191,7 +192,7 @@ fun NodeLayoutSettings(
NodeListDensity.COMPACT ->
NodeItemCompact(
- thisNode = null,
+ thisNode = localNode,
thatNode = previewNode,
distanceUnits = 0,
showPower = showPower,
@@ -238,3 +239,19 @@ internal fun previewSampleNode(): Node = Node(
isFavorite = true,
hopsAway = 1,
)
+
+/** Local device node used as reference point for distance calculation in previews. */
+@Suppress("MagicNumber")
+internal fun previewLocalNode(): Node = Node(
+ num = 0xDEADBEEF.toInt(),
+ user =
+ User(
+ id = "!deadbeef",
+ long_name = "My Radio",
+ short_name = "MyRd",
+ hw_model = HardwareModel.HELTEC_V3,
+ role = Config.DeviceConfig.Role.CLIENT,
+ ),
+ position = Position(latitude_i = 338000000, longitude_i = -1179000000, altitude = 50, sats_in_view = 10),
+ lastHeard = (nowSeconds - 30).toInt(),
+)

diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettingsPreviews.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettingsPreviews.kt
index fa3f996671..f647ce0b47 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettingsPreviews.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettingsPreviews.kt
@@ -129,6 +129,7 @@ fun NodeLayoutSettingsCompactMinimalPreview() {
// ---------------------------------------------------------------------------
private val sampleNode = previewSampleNode()
+private val localNode = previewLocalNode()
/** Sample node rendered in Complete density (all fields visible). */
@Suppress("PreviewPublic")
@@ -139,7 +140,7 @@ fun SampleNodeCompletePreview() {
Surface {
Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) {
NodeItem(
- thisNode = null,
+ thisNode = localNode,
thatNode = sampleNode,
distanceUnits = 0,
tempInFahrenheit = false,
@@ -158,7 +159,7 @@ fun SampleNodeCompactAllFieldsPreview() {
AppTheme {
Surface {
Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) {
- NodeItemCompact(thisNode = null, thatNode = sampleNode, distanceUnits = 0)
+ NodeItemCompact(thisNode = localNode, thatNode = sampleNode, distanceUnits = 0)
}
}
}
@@ -173,7 +174,7 @@ fun SampleNodeCompactSignalOnlyPreview() {
Surface {
Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) {
NodeItemCompact(
- thisNode = null,
+ thisNode = localNode,
thatNode = sampleNode,
distanceUnits = 0,
showPower = false,
@@ -200,7 +201,7 @@ fun SampleNodeCompactNameOnlyPreview() {
Surface {
Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) {
NodeItemCompact(
- thisNode = null,
+ thisNode = localNode,
thatNode = sampleNode,
distanceUnits = 0,
showPower = false,
@@ -226,7 +227,7 @@ fun SampleNodeCompleteFahrenheitPreview() {
Surface {
Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) {
NodeItem(
- thisNode = null,
+ thisNode = localNode,
thatNode = sampleNode,
distanceUnits = 0,
tempInFahrenheit = true,
@@ -246,7 +247,7 @@ fun SampleNodeCompleteImperialPreview() {
Surface {
Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) {
NodeItem(
- thisNode = null,
+ thisNode = localNode,
thatNode = sampleNode,
distanceUnits = 1,
tempInFahrenheit = true,

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsCompact_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsCompact_Dark_d19fbf1f_0.png
index fb0b971de8..df86077111 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsCompact_Dark_d19fbf1f_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsCompact_Dark_d19fbf1f_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsCompact_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsCompact_Light_b29dc7a7_0.png
index 55d7f17421..8d6f84280e 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsCompact_Light_b29dc7a7_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsCompact_Light_b29dc7a7_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsComplete_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsComplete_Dark_d19fbf1f_0.png
index 64c8568d5b..ffa8ec0114 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsComplete_Dark_d19fbf1f_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsComplete_Dark_d19fbf1f_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsComplete_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsComplete_Light_b29dc7a7_0.png
index 7fd34be566..0abb184012 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsComplete_Light_b29dc7a7_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotNodeLayoutSettingsComplete_Light_b29dc7a7_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactAllFields_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactAllFields_Dark_d19fbf1f_0.png
index a194cc19c6..91ee7681da 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactAllFields_Dark_d19fbf1f_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactAllFields_Dark_d19fbf1f_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactAllFields_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactAllFields_Light_b29dc7a7_0.png
index 784dfdd345..b02d1cec9a 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactAllFields_Light_b29dc7a7_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactAllFields_Light_b29dc7a7_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteFahrenheit_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteFahrenheit_Dark_d19fbf1f_0.png
index 916a4e89e5..ebb1dbda76 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteFahrenheit_Dark_d19fbf1f_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteFahrenheit_Dark_d19fbf1f_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteFahrenheit_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteFahrenheit_Light_b29dc7a7_0.png
index 8f2e1759e5..555533d07e 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteFahrenheit_Light_b29dc7a7_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteFahrenheit_Light_b29dc7a7_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteImperial_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteImperial_Dark_d19fbf1f_0.png
index 98434eac6a..edabdd3c66 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteImperial_Dark_d19fbf1f_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteImperial_Dark_d19fbf1f_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteImperial_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteImperial_Light_b29dc7a7_0.png
index 691ec4bca5..c0eb378cfb 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteImperial_Light_b29dc7a7_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteImperial_Light_b29dc7a7_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeComplete_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeComplete_Dark_d19fbf1f_0.png
index d24f0797cc..ba619aecf1 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeComplete_Dark_d19fbf1f_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeComplete_Dark_d19fbf1f_0.png differ

diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeComplete_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeComplete_Light_b29dc7a7_0.png
index 4aa2ceb6f7..6117f78bb1 100644
Binary files a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeComplete_Light_b29dc7a7_0.png and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeComplete_Light_b29dc7a7_0.png differ

Served by rngit 1.5.2 - Generated in 0.46s